import { defineStore } from 'pinia'
import { computed, ref } from 'vue'
import { cloneDeep } from 'lodash'

/**
 * 用于工单复制
 */
export const useOrderCopy = defineStore('orderCopy', () => {
  // 工单详情（内部使用）
  const _orderDetail = ref<OrderDetail | null>(null)

  // 工单商品列表（内部使用）
  const _orderGoodList = ref<Array<OrderDetailAPIResponse.GoodListItem>>([])

  // 工单信息（给外部使用）
  const orderDetailToPaste = computed(() => {
    return cloneDeep(_orderDetail.value)
  })

  // 工单商品列表（外部使用）
  const orderGoodListToPaste = computed(() => {
    return cloneDeep(_orderGoodList.value)
  })

  /**
   * 设置工单信息和工单商品列表
   * @param orderDetail - 工单信息
   * @param orderGoodList - 工单商品列表
   */
  const setCopyInfo = (
    orderDetail: OrderDetail,
    orderGoodList: Array<OrderDetailAPIResponse.GoodListItem>,
  ) => {
    _orderDetail.value = orderDetail
    _orderGoodList.value = orderGoodList
  }

  /**
   * 清空复制的信息
   */
  const clearCopyInfo = () => {
    _orderDetail.value = null
    _orderGoodList.value = []
  }

  return {
    orderDetailToPaste,
    orderGoodListToPaste,
    setCopyInfo,
    clearCopyInfo,
  }
})
